// 大于数放左边，等于数放中间，小于数放左边；

#include <iostream>
#include <vector>
#include <queue>
using namespace std;

vector<int> partition(std::vector<int> arr,int l, int r,int p) {
    int less = l-1;
    int more = r+1;
    while(l<more) {
        if(arr[l]<p) {
            swap(arr[l++],arr[++less]);
        }else if(arr[l]>p){
            swap(arr[l],arr[--more]);
        }else{
            ++l;
        }
        return {less+1,more-1};
    }
}